灵感
想给自已的blog添加一个相册功能、给生活中的点点滴滴留影记录。搜寻网络上给Next主题添加相册功能的基本上没有,只能重头到尾开始一点点的实践。
大致的想法:
1. 相册展示类似于归档一样,按时间戳来分类
2.每一个时间节点都是一个小相册,展示的时候上面是相册的标题,下面是几张经典图片的缩略图
3.点击标题,进行相册的详细页面,可以看到更多关于这个小相册的图片
4.相册展示的特效类似于Lawlite
实践
插件开发实践
由于Hexo基于NodeJS开发的,通过插件的方式集成一些第三方的功能。比如归档是 通过hexo-generator-archive实现的,标签页是通过hexo-generator-tag实现的。更多Hexo插件请看Hexo Plugins.这里就不过多讨论。
本次实践修改的插件有:
1.hexo-generator-archive
2.hexo-generator-index
2.hexo-generator-category
4.hexo-generator-photo[自已新增的]
每一个小相册都是一个MD文件,每次首页和归档生成的时候都会把相册加载进去。我想让相册和博客进行区别,所以在MD文件的开头会声明一个属性isPhoto,true表示相册、false表示普通博客文章。
hexo-generator-archive和hexo-generator-index中去除相册的展示。
修改插件的\lib\generator.js文件,在exports函数,变量声明完加上如下一段代码。
//过滤所有的文章 |
归档的时候会显示所有文章的总数(包含相册),通过下列方式去除掉。
在hexo-generator-archive插件的\lib\generator.js文件添加如下注释的代码:
function generate(path, posts, options) { |
修改归档的展示页面代码(themes\next\layout\archive.swig):
将site.posts.length改为page.postLength即可。
新增hexo-generator-photo插件,自动生成相册时间戳界面,参考hexo-generator-archive插件。
拷贝hexo-generator-archive的源码,主要修改以下几个文件:
1.index.js:
/* global hexo */ |
2.package.json:
{ |
3.generator.js:
'use strict'; |
hexo执行调用Hexo-generator-photo插件:
网站根目录的package.json文件中添加如下一行:
"hexo-server": "^0.2.0", //下面添加,不要遗漏"," |
相册样式调整
新增相册的swig文件(themes\next\layout\photo.swig):
{% extends '_layout.swig' %} |
添加相册子标题模板(themes\next\layout\_macro\post-collapse-photo.swig):
{% macro render(post) %} |
新增样式(themes\next\source\css\_custom\custom.styl):
box{ width:100%;} |
#####相册配置#####
站点文件配置(_config.yml)新增如下配置:
|
//Photo生成配置 |
主题文件配置(_config.yml)新增如下配置
menu: //menu节点添加如下一行 |
中文显示(themes\next\languages\zh-Hans.yml):
title: //节点下添加如下一行 |
测试
source\_posts目录下添加相册的MD文件,内容如下:
|
通过`Hexo server`启动服务,访问`http://localhost:4000/photos/`即可看到生成的相册界面。

心得 总结
安装Hexo之后,插件默认存放在blog\node_modules目录下。
插件开发的核心文件:index.js,package.json,generator.js
关于插件开发的Demo:Plugin Demo
后续优化
- 首页、标签、文章详情页日志总数减去相册的条数(site.pages.length)
- 图片展示优化
- 图片整理(QQ空间链接不行)
- 视屏的优化
- 相册页的日志总条数问题

